<?php
class JobeetTestFunctional extends sfTestFunctional
{
  public function loadData()
  {
    Doctrine::loadData(sfConfig::get('sf_test_dir').'/fixtures');

    return $this;
  }

  public function getMostRecentProgrammingJob()
  {
    $q = Doctrine_Query::create()
        ->select('j.*')
        ->from('JobeetJob j')
        ->leftJoin('j.JobeetCategory c')
        ->where('c.slug = ?', 'programming');
    $q = Doctrine::getTable('JobeetJob')->addActiveJobsQuery($q);

    return $q->fetchOne();
  }

  public function getExpiredJob()
  {
    $q = Doctrine_Query::create()
        ->from('JobeetJob j')
        ->where('j.expires_at < ?', date('Y-m-d', time()));

    return $q->fetchOne();
  }
  public function createJob($values = array(), $publish = false)
  {
    $this->
        get('/job/new')->
        click('Preview your job', array('job' => array_merge(array(
        'company'      => 'Sensio Labs',
        'url'          => 'http://www.sensio.com/',
        'position'     => 'Developer',
        'location'     => 'Atlanta, USA',
        'description'  => 'You will work with symfony to develop websites for our customers.',
        'how_to_apply' => 'Send me an email',
        'email'        => 'for.a.job@example.com',
        'is_public'    => false,
        ), $values)))->
        followRedirect()
    ;

    if ($publish)
    {
      $this->
          click('Publish', array(), array('method' => 'put', '_with_csrf' => true))->
          followRedirect()
      ;
    }

    return $this;
  }

  public function getJobByPosition($position)
  {
    $q = Doctrine_Query::create()
        ->from('JobeetJob j')
        ->where('j.position = ?', $position);

    return $q->fetchOne();
  }

}
?>
